package com.weiyuwqj.api.service;

import com.weiyuwqj.api.base.BaseService;
import com.weiyuwqj.api.common.PageList;
import com.weiyuwqj.api.common.Paginator;
import com.weiyuwqj.api.model.BasUser;
import com.weiyuwqj.api.model.BasUserInfo;
import com.weiyuwqj.api.model.vo.BasUserInfoVo;
import com.weiyuwqj.api.model.vo.GuaranteeSecurityAndBankVo;
import com.weiyuwqj.api.model.vo.UserInvestVo;
import com.weiyuwqj.api.model.vo.UserVo;
import org.springframework.stereotype.Service;

import javax.xml.ws.ServiceMode;
import java.util.List;
import java.util.Map;

/**
 * Created by yandq on 15/10/11.
 */

public interface BasUserService extends BaseService<BasUser> {

    PageList getList(Paginator p, Map map);

    //后台首页昨日今日注册数量
    Map countUserByTime();

    //判断用户名是否存在
    BasUser getUserByUsername(String username);

//    //根据userid获取基本信息
//    BasUserInfoVo getUserInfoById(Integer userId);

    //后台首页统计每天登陆人数
    Integer countUserLoginNum();

    //后台不分页列表
    List<UserVo> getList(Map map);

    List<Map> statUser(Map map);

    Integer doRegister(BasUser user, String invite, BasUserInfo info);

    BasUser getUserByUsernameAndPassword(String username, String password);

    //修改密码
    Integer modifyPassword( String mobile,  String newPassword);

    UserVo getUserByMobile(String mobile);

//    //修改手机号码
//    Integer modifyMobile(String mobile, Integer id);

    Integer mobilePasswordByMobile( String password,  String mobile);

    /**
     * 修改用户平台编号
     * @param platformId 用户平台
     * @param userId 用户ID
     * @return 修改返回行
     */
    Integer mobilePlatformId(String platformId, Integer userId);

    //后台用户投资统计
     List<UserInvestVo> listUserInvest(Map map);

    List listByUserName(List userNameList);

    List listByInviteUser(List inviteUserNameList);


    List<UserVo> listUser(Map map);

    BasUser getUserByThirdpart(Map map);

    GuaranteeSecurityAndBankVo getGuaranteeByUserId(Integer userId);

//    /**
//     * 公司绑卡
//     * @param userId      用户id
//     * @param preMobile   预留手机号码
//     * @param orgNo       组织机构代码
//     * @param acctName    账户名称
//     * @param acctNo      账号
//     * @param openBranch  开户银行（精确到分行）
//     * @return
//     */
//    void companyBank(Integer userId,String preMobile,String orgNo,String acctName,
//                     String acctNo,String openBranch,Integer type);

    /**
     * 根据平台客户号查询信息
     * @param platformId
     * @return
     */
    BasUser getUserByPlatformId(String platformId);

    List<UserVo> getAssetList(Integer assetId);


	/**
	 * 获取企业投资用户
	 *
	 * @param amount
	 * @return 企业投资用户列表
	 */
	List<BasUser> getEnterpriesUser(String amount);
}
